/*****************************************************************************
* File Name: ir.h
*
* Version: 1.0
*
* Description:
* This file contains IR NEC and Samsung Protocol implementation
*
* Note:
* Define DISABLE_IR in platform.h to disable IR module
* Enable NEC_PROTOCOL macro in platform.h file to use NEC IR protocol
* 
* 
* Owner: MRAO
* 
* Related Document:
* UDB Based PWM data sheet.
* TCPWM Data sheet
*
* Hardware Dependency:
* IR Transmitter Circuit
*
* Code Tested With:
* 1. PSoC Creator 3.1 
* 2. ARM GCC 4.8.4
******************************************************************************
* Copyright (2015), Cypress Semiconductor Corporation.
******************************************************************************
* This software is owned by Cypress Semiconductor Corporation (Cypress) and is
* protected by and subject to worldwide patent protection (United States and
* foreign), United States copyright laws and international treaty provisions.
* Cypress hereby grants to licensee a personal, non-exclusive, non-transferable
* license to copy, use, modify, create derivative works of, and compile the
* Cypress Source Code and derivative works for the sole purpose of creating
* custom software in support of licensee product to be used only in conjunction
* with a Cypress integrated circuit as specified in the applicable agreement.
* Any reproduction, modification, translation, compilation, or representation of
* this software except as specified above is prohibited without the express
* written permission of Cypress.
*
* Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH
* REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 
* Cypress reserves the right to make changes without further notice to the
* materials described herein. Cypress does not assume any liability arising out
* of the application or use of any product or circuit described herein. Cypress
* does not authorize its products for use as critical components in life-support
* systems where a malfunction or failure may reasonably be expected to result in
* significant injury to the user. The inclusion of Cypress' product in a life-
* support systems application implies that the manufacturer assumes all risk of
* such use and in doing so indemnifies Cypress against all charges. Use may be
* limited by and subject to the applicable Cypress software license agreement.
*****************************************************************************/
#ifndef _IR_H_
#define _IR_H_

#include "platform.h"
#include "device.h"
    
#define INVALID                              (0xFF) /*Invalid command value*/
#define IRDATA_LENGTH                        (34u)  /*IR data length*/
    
#ifdef NEC_PROTOCOL /*Enable this macro to use NEC protocol in this IR module*/
#define REPEAT_BIT_LENGTH                    (2u)
#endif /* NEC_PROTOCOL */
    
#ifndef DISABLE_IR
/*****************************************************************************
* Function Name: IR_Init()
******************************************************************************
* Summary:
* This function is used to initialize IR module
*
* Parameters:
* irDeviceaddress - IR Device address
*
* Return:
* None
*
* Note:
* While using NEC protocol make sure address is given in 8 bit format,
* For using SAMSUNG protocol make sure address is given in 16 bit format.      
*
*****************************************************************************/
extern void IR_Init(uint16 irDeviceaddress);

/*****************************************************************************
* Function Name: IR_Start()
******************************************************************************
* Summary:
* This function is used to initialize IR module
*
* Parameters:
* report - IR Report containing command to be processed through IR
*
* Return:
* None
*
* Note:
*
*****************************************************************************/
extern void IR_Start(IR_Report *report);

/*****************************************************************************
* Function Name: IR_Complete()
******************************************************************************
* Summary:
* This function is used to check IR data transmission status
*
* Parameters:
* None
*
* Return:
* Returns TRUE if all bits transmitted successfully
* 
* Note:
*
*****************************************************************************/
extern bool IR_Complete(void);

/*****************************************************************************
* Function Name: IR_Stop()
******************************************************************************
* Summary:
* This function is used to stop IR Module functionality
*
* Parameters:
* None
*
* Return:
* None
* 
* Note:
*
*****************************************************************************/
extern void IR_Stop(void);
#else
#define IR_Init(irDeviceaddress)
#define  IR_Start(report)
#define  IR_Complete()              (true)
#define  IR_Stop()
#endif /* DISABLE_IR */

#endif /* _IR_H_ */
